package com.lk.sys.dao;

import com.lk.sys.common.vo.CheckBox;
import com.lk.sys.common.vo.SysRoleMenuVo;
import com.lk.sys.entity.SysRole;
import org.apache.ibatis.annotations.Delete;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;

@Mapper
public interface SysRoleDao {

    @Select("select id, name from sys_roles")
    List<CheckBox> findRoles();

    /**
     * 角色更新update操作
     * @author Lukang
     * @date 2021/12/22 下午9:55
     * @param entity
     * @return int
     */
    int updateObject(SysRole entity);

    /**
     * 通过角色id使用嵌套查询得到SysRoleMenuVo对象，
     * @author Lukang
     * @date 2021/12/22 下午8:45
     * @param id
     * @return com.lk.sys.common.vo.SysRoleMenuVo
     */
    SysRoleMenuVo findObjectById(Integer id);

    /**
     * 保存角色本身信息
     * @author Lukang
     * @date 2021/12/16 下午9:13
     * @param entity 
     * @return int
     */
    int insertObject(SysRole entity);

    /**
     * 根据角色名称查询个数
     * @author Lukang
     * @date 2021/12/7 下午8:20
     * @param name
     * @return int
     */
    int getRowCount(@Param("name") String name);

    /**
     * 根据查询参数查询角色数据
     * @author Lukang
     * @date 2021/12/7 下午8:25
     * @param name
     * @param startIndex
     * @param pageSize
     * @return java.util.List<com.lk.sys.entity.SysRole>
     */
    List<SysRole> findPageObjects(@Param("name") String name,
                                  @Param("startIndex") Long startIndex,
                                  @Param("pageSize") Integer pageSize);

    /**
     * 基于角色id删除角色数据
     * @author Lukang
     * @date 2021/12/8 下午10:05
     * @param id
     * @return int
     */
    @Delete("delete from sys_roles where id=#{id}")
    int deleteObjectById(Integer id);
}
